package com.jacky.webflux.services;

import com.jacky.webflux.dtos.AppUserDto;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.util.List;

public interface AppUserService {

    Mono<AppUserDto> getById(Long userId);

    Mono<AppUserDto> saveUser(AppUserDto dto);

    Mono<AppUserDto> updateById(Long id, AppUserDto dto);

    Mono<Void> deleteById(Long userId);

    Flux<AppUserDto> getAllUsers();

    Mono<List<AppUserDto>> allUserList();

    Mono<Page<AppUserDto>> getWithPage(Pageable pageable);

}
